package tech.aistar.mapper;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import tech.aistar.entity.Product;

import java.util.List;

/**
 * 本类用来演示: mybatis基于注解的开发方式
 *             mybatis的基于xml的开发方式
 *
 */
public interface ProductMapper {

    /**
     * 最复杂的 - 分页+多条件组合查询
     *
     * 多条件组合查询...
     *
     * 1 - 当俩个参数都没有的时候,都是为null的时候,那么查询所有.
     *
     * 2 - 如果仅仅传入了第一个参数name,根据产品的name进行模糊查询
     *
     * 3 - 如果仅仅传入了typeId,根据产品类型是精确查找
     *
     * 如果mapper方法中是多个参数,那么必须使用@Param注解
     *
     * @param name 产品的名称
     * @param typeId 产品的类型的id
     * @return
     */
    List<Product> findAll(@Param("name") String name, @Param("typeId") Integer typeId);


    /**
     * 根据id进行删除操作
     * @param id
     */
    @Delete("delete from product where id=#{value}")
    void delById(Integer id);
}
